热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

机时|小错_从零开始搭建RabbitMQ集群遇到的问题

篇首语:本文由编程笔记#小编为大家整理,主要介绍了从零开始搭建RabbitMQ集群遇到的问题相关的知识,希望对你有一定的参考价值。文章目录

篇首语:本文由编程笔记#小编为大家整理,主要介绍了从零开始搭建RabbitMQ集群遇到的问题相关的知识,希望对你有一定的参考价值。



文章目录


  • 安装RabbitMQ
    • 安装el环境
    • 安装RabbitMQ
    • 启动RabbitMQ
    • 启动RabbitMQ管理界面
    • 宿主机连接RabbitMQ管理界面

  • RabbitMQ集群
    • 普通模式
    • 镜像模式



安装RabbitMQ

安装el环境

RabbitMQ运行在el环境,所以安装RabbitMQ之前必须安装el环境并且版本一定要对应,不能安装低版本的,使用百度云下好,再使用Xshell传入虚拟机

链接:https://pan.baidu.com/s/1tduTfuTbGZQrzafi95MLBA
提取码:szn7
下载得到otp_src_24.2.2.tar.gz

使用Xshell将otp_src_24.2.2.tar.gz传入虚拟机,使用Xshell的sftp协议,主机ip是在命令行输入ifconfig中ens33中的ip地址,第一次需要输入虚拟机登录账户root和密码

如果没有出现ens33,则有两种可能


  1. /etc/sysconfig/network-scripts目录下的ifcfg-ens33文件的ONBOOT=no,应该改为ONBOOT=yes
  2. 使用VMWare虚拟机时没有开启它的网络服务,如下,打开任务管理器里面的服务找到这几个打开就是了,DHCP动态主机配置协议用于分配IP地址,NAT网络地址转换协议用于转换内网和外网

    第二天打开电脑虚拟机出现网络问题,如DNS域名解析不了,很可能就是重启后这些服务又关闭了

安装依赖,解压并安装erl,make & make install 可能报点小错,但是无关紧要。xshell一半传递文件到/root目录(使用root用户账号密码在Xshell上连接虚拟机时),反正一般 cd ~ 即可找到

cd ~
yum install -y gcc gcc-c++ unixODBC-devel openssl-devel ncurses-devel
tar -zxvf otp_src_24.2.2.tar.gz
mv otp_src_24.2.2 /opt/erlang
cd /opt/erlang
./configure --prefix=/opt/erlang/ --with-ssl --enable-hipe --enable-threads --enable-smp-support --enable-kernel-poll --without-javac
make & make install

配置环境变量

vim /etc/profile

添加如下配置,记得是添加,而不是覆盖,如果配置文件里面有export PATH这一行,只需在后面加上 :/opt/erlang/bin ,记住前面有个冒号,一般这行可能有配置的jdk所以在最后添加就行,如果没有export PATH这一行则直接添加到文件末尾就行

export PATH=$PATH:/opt/erlang/bin

运行如下命令让配置生效

source /etc/profile

查看是否安装成功

erl -version

出现如下情况则安装成功


安装RabbitMQ

进入网址
https://github.com/rabbitmq/rabbitmq-server/releases/tag/v3.9.13

下载得到rabbitmq-server-3.9.13-1.el7.noarch.rpm

使用Xshell将rabbitmq-server-3.9.13-1.el7.noarch.rpm传入虚拟机,然后执行如下命令

rpm -import https://www.rabbitmq.com/rabbitmq-release-signing-key.asc
rpm -Uvh --nodeps rabbitmq-server-3.9.13-1.el7.noarch.rpm

启动RabbitMQ

systemctl start rabbitmq-server

出现如下情况

输入journalctl -xe,出现如下情况,可以看到/usr/lib/rabbitmq/bin/rabbitmq-server的文件下找不到erl环境,而且是在73行,所以我们只需加上环境变量即可

输入vi后输入:73可以快速定位到73行

vi /usr/lib/rabbitmq/bin/rabbitmq-server
:73

加入如下两行代码,不要覆盖任何东西

ERLANG_HOME=/usr/local/erlang
export PATH=$PATH:/opt/erlang/bin

加入完后重新启动,并查看状态

systemctl start rabbitmq-server
systemctl status rabbitmq-server

出现如下情况表示运行成功


启动RabbitMQ管理界面

防火墙开放端口5672/tcp和15672/tcp,方便宿主机连接管理界面

firewall-cmd --zone=public --add-port=5672/tcp --permanent
firewall-cmd --zone=public --add-port=15672/tcp --permanent
iptables -I INPUT -p tcp --dport 15672 -j ACCEPT

启动RabbitMQ管理界面

/usr/sbin/rabbitmq-plugins enable rabbitmq_management

出现如下情况则启动成功


宿主机连接RabbitMQ管理界面

ifconfig 获取局域网IP

ifconfig

出现了ens33,则里面的ip 192.168.15.137就是我们要找的ip

在宿主机浏览器输入http://192.168.15.137:15672/,出现如下界面即成功了,默认用户为guest,密码也为guest

出现了如下情况,因为默认RabbitMQ只能在本机登录

我们可以使用rabbitmqctl添加新的用户,赋予其更高的权限,让其可以让外部访问

/usr/sbin/rabbitmqctl add_user root 123456
/usr/sbin/rabbitmqctl set_user_tags root administrator
/usr/sbin/rabbitmqctl list_users

出现如下情况,我们就成功的添加了用户并设置了权限

重新在管理页面输入账号root ,密码 123456,可以看到如下,说明我们登录成功


RabbitMQ集群

我们使用两台虚拟机,分别执行上面步骤,安装好RabbitMQ之后,再实现集群功能,使用ifconfig,分别查看两个虚拟机的enss33里面的ip,我的虚拟机ip为192.168.15.137和 192.168.15.141


普通模式

集群中消息只存在其中一个节点,如果客户端访问另一个节点,则该节点需要临时从存放消息的那个节点拉取消息并返回给客户端

先禁用防火墙,在两个虚拟机中运行

systemctl stop firewalld

修改erlang.COOKIE,将两台虚拟机中的该文件中的内容设为一样,如NUFVTUNGSGOXLXKMTYYZ

vi /var/lib/rabbitmq/.erlang.COOKIE

修改两个虚拟机的节点名称

vi /etc/rabbitmq/rabbitmq-env.conf

192.168.15.137

NODENAME=rabbit@server1

192.168.15.141

NODENAME=rabbit@server2

修改DNS域名映射,在两台虚拟机中都要修改,这里的server1和server2在加入集群需要使用到

vi /etc/hosts

192.168.15.137 server1
192.168.15.141 server2

重启rocketmq服务,在两台虚拟机中运行

systemctl restart rabbitmq-server
systemctl status rabbitmq-server

在192.168.15.137虚拟机下运行,server2就是上面配置的host主机名

/usr/sbin/rabbitmqctl stop_app
/usr/sbin/rabbitmqctl join_cluster --ram rabbit@server2
/usr/sbin/rabbitmqctl start_app
/usr/sbin/rabbitmqctl cluster_status

如果上面rabbitmqctl join_cluster运行不了,可以反向操作,博主就是反向操作才连接成功,不过只有启动192.168.15.141下的管理界面才能看到
在192.168.15.141虚拟机下运行,server1就是上面配置的host主机名

/usr/sbin/rabbitmqctl stop_app
/usr/sbin/rabbitmqctl join_cluster --ram rabbit@server1
/usr/sbin/rabbitmqctl start_app
/usr/sbin/rabbitmqctl cluster_status

如下,没有报错则运行成功,只有一行运行结果

启动192.168.15.141管理界面并输入http://192.168.15.141:15672地址出现如下情况则搭建成功,可以看到我们有两个节点,且默认是消息异步复制


镜像模式

集群中消息存放在每个节点,客户端访问每个节点都能拿到消息,其实镜像模式和普通模式的区别,也就是镜像模式会同步将消息复制到各个节点,而普通模式是异步将消息复制到各个节点

在192.168.15.141虚拟机(看上面加入集群语句是谁运行成功,如果在192.168.15.137运行成功,则以下语句依然在192.168.15.137运行)下运行,配置两个主机同步复制,即变为镜像模式,

/usr/sbin/rabbitmqctl set_policy ha-all "^" '"ha-mode":"all"'

出现如下,则设置策略成功,将异步复制设置为同步复制,"^"表示匹配任意队列,即任意队列的数据都同步复制到所有节点


策略意义
ha-all所有节点同步复制
ha-two两个节点同步复制
ha-node给定个节点同步复制

推荐阅读
  • Metasploit攻击渗透实践
    本文介绍了Metasploit攻击渗透实践的内容和要求,包括主动攻击、针对浏览器和客户端的攻击,以及成功应用辅助模块的实践过程。其中涉及使用Hydra在不知道密码的情况下攻击metsploit2靶机获取密码,以及攻击浏览器中的tomcat服务的具体步骤。同时还讲解了爆破密码的方法和设置攻击目标主机的相关参数。 ... [详细]
  • 安装oracle软件1创建用户组、用户和目录bjdb节点下:[rootnode1]#groupadd-g200oinstall[rootnode1]#groupad ... [详细]
  • Firefox火狐浏览器关闭到http://detectportal.firefox.com的流量问题解决办法
    本文介绍了使用Firefox火狐浏览器时出现关闭到http://detectportal.firefox.com的流量问题,并提供了解决办法。问题的本质是因为火狐默认开启了Captive portal技术,当连接需要认证的WiFi时,火狐会跳出认证界面。通过修改about:config中的network.captive-portal-service.en的值为false,可以解决该问题。 ... [详细]
  • 本文介绍了Oracle数据库中tnsnames.ora文件的作用和配置方法。tnsnames.ora文件在数据库启动过程中会被读取,用于解析LOCAL_LISTENER,并且与侦听无关。文章还提供了配置LOCAL_LISTENER和1522端口的示例,并展示了listener.ora文件的内容。 ... [详细]
  • 众筹商城与传统商城的区别及php众筹网站的程序源码
    本文介绍了众筹商城与传统商城的区别,包括所售产品和玩法不同以及运营方式不同。同时还提到了php众筹网站的程序源码和方维众筹的安装和环境问题。 ... [详细]
  • 本文介绍了在Linux下安装和配置Kafka的方法,包括安装JDK、下载和解压Kafka、配置Kafka的参数,以及配置Kafka的日志目录、服务器IP和日志存放路径等。同时还提供了单机配置部署的方法和zookeeper地址和端口的配置。通过实操成功的案例,帮助读者快速完成Kafka的安装和配置。 ... [详细]
  • 本文讨论了在openwrt-17.01版本中,mt7628设备上初始化启动时eth0的mac地址总是随机生成的问题。每次随机生成的eth0的mac地址都会写到/sys/class/net/eth0/address目录下,而openwrt-17.01原版的SDK会根据随机生成的eth0的mac地址再生成eth0.1、eth0.2等,生成后的mac地址会保存在/etc/config/network下。 ... [详细]
  • Python脚本编写创建输出数据库并添加模型和场数据的方法
    本文介绍了使用Python脚本编写创建输出数据库并添加模型数据和场数据的方法。首先导入相应模块,然后创建输出数据库并添加材料属性、截面、部件实例、分析步和帧、节点和单元等对象。接着向输出数据库中添加场数据和历程数据,本例中只添加了节点位移。最后保存数据库文件并关闭文件。文章还提供了部分代码和Abaqus操作步骤。另外,作者还建立了关于Abaqus的学习交流群,欢迎加入并提问。 ... [详细]
  • 大坑|左上角_pycharm连接服务器同步写代码(图文详细过程)
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了pycharm连接服务器同步写代码(图文详细过程)相关的知识,希望对你有一定的参考价值。pycharm连接服务 ... [详细]
  • IP双栈环境下网络应用迁移
    IPv4向IPv6迁移有多种途径,在选择具体的迁移方式时,当前环境中运行的应用是否支持IPv6是重要的考量因素之一,同时在编写新的应用时,需要考虑新编写的应用不仅可以适应当前主流的IPv4环境, ... [详细]
  • celery 爬虫使用
    简介celery是一个基于分布式消息传输的异步任务队列,它专注于实时处理,同时也支持任务调度。它由三部分组成,消息中间件, ... [详细]
  • FTP服务ftp的报错及用户管理
    ftp服务常见报错530报错认证失败(密码错误或者服务端拒绝)550服务本身未开启553文件系统不可写(权限问题)500服 ... [详细]
  • 【教程】SecureCRT8.5安装和注册的详细步骤及操作指南
    00.目录文章目录00.目录01.SecureCRT8.5介绍02.SecureCRT8.5的特性03.SecureCRT8.5的特点04.SecureCRT8.5安装05.Sec ... [详细]
  • Pycharm配置文档教程
    1桌面找到快捷方式双击打开234需要自行注册5看自己喜欢选择喜欢白色选择左边喜欢黑色选择右边67可选如果你对Markdown感兴趣;或者会用就点击install不敢兴趣调到步骤88 ... [详细]
  • PHP程序员玩转Linux系列 搭建FTP代码开发环境
    PHP程序员玩转Linux系列搭建FTP代码开发环境-PHP程序员玩转Linux系列文章:有些同学可能觉得我写的都是啥yum安装的,随便配置一下而已,没啥技术含量,我的目的是让大家 ... [详细]
author-avatar
一颗顽石
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有